package com.tedu.api.thread;

/**
 * 线程：单线程、多线程
 * 单线程：按照顺序执行线程，主方法就是主线程 main
 * 多线程：创建多条线程，做不同的事情
 * 多线程并发：创建多条线程，”同时“做相同的事情
 *
 *
 * 案例：创建 Chef 类 实现Runnable
 *                  私有属性 dishName
 *                  run()功能：{提示语句：开始准备——dishName
 *                             模拟准备时间：阻塞1~3
 *                  Math.random()  随机生成0.0到1.0浮点数值(不包含1.0)
 *                             提示语句：dishName+准备完成
 *                  }
 *          主方法 实现 创建两个线程 两个  chef1
 *                                   chef2
 */
public class Kitchen {
    public static void main(String[] args) {
       //第一位厨师----西红柿炒鸡蛋
        Thread chef1=new Thread(new Chf("老虎菜"));
        // 第二位厨师---红烧肉
        Thread chef2=new Thread(new Chf("红烧肉"));

        chef1.start();
        chef2.start();
    }
}
//创建厨子类
class Chf implements Runnable{
    private String disName; //私有属性 ：菜肴名
    //厨子创建“同时”菜肴的制作---构造器
    public Chf(String dn){
        this.disName=dn;  //来厨师 this.disName="红烧肉"
                          //this当前对象---Chef
    }
    public void run() {
        System.out.println("开始准备"+disName);
        //模拟厨子准备时间：1~3秒
        //1.Math.random() 获取0.0~1.0范围值【不包括1.0】
        // 范围值：0.0~0.9
        //2.Math.random()*3000，得到范围值：0.0~3000.0
        //范围值：0.0~2999.0
        //3.成3000范围:0.0~2999.0，强转long类型  (long)Math.random()
        // 0~2999  秒数：0~2
        //4.加1000 (long)Math.random()*3000）+1000
        // 范围值：1~3秒
        try {
            Thread.sleep((long)(Math.random()*3000)+1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(disName="准备完成~请享用");
    }
}
